1. Field of the Invention
The present invention generally relates to forward error correction, and more particularly to systems and methods of decoding low-density parity-check (LDPC) code blocks.
2. Description of the Related Art
Transmission errors may occur when data are transmitted between a source and a receiver. To ensure that the transmitted data can be properly recovered, forward error correction (FEC) codes can be embedded in the transmitted data for permitting the receiver apparatus to detect and correct some of these errors. Low-density parity-check (LDPC) codes are a class of FEC codes that is increasingly used in transmission systems owing to its enhanced performance on additive white Gaussian noise (AWGN) channels.
LDPC codes are block codes that are defined by a parity-check matrix H having M rows and N columns, M being the number of constraints and N being the number of variables. A non-zero entry of the matrix at position (m,n) indicates that the variable n participates in the constraint m. For decoding a LDPC code block, the decoder at the receiver end usually applies an iterative method that uses as input log-likelihood ratios (LLR) representing the received bit sequence of the code block. LLR is a ratio of the probability that a bit is a zero to the probability that the bit is a one. These values can represent each bit by a real number or, more commonly, an integer in some range, e.g., [−32, 31]. The sign of the LLR indicates the likelihood that the bit is a zero or a one, and the magnitude of the LLR represents the degree of likelihood. Accordingly, a value of 31 signifies that the transmitted bit is a zero with very high probability, and a value of −32 signifies that the transmitted bit is a one with very high probability.
Data represented according to the aforementioned scale is referred to as “soft data”, and each iteration usually receives a sequence of inputs corresponding to probabilities for the bit values and provides as output corrected probabilities, taking into account constraints of the code. Generally, this iterative decoding method converges as the soft data closely represents the transmitted data. After each iteration is completed, the decoder makes a “hard decision” on each bit by examining the sign of the soft data. Those bits that have a positive sign (soft value between 0 and 31, for example) are assigned binary zero, and the remaining bits are assigned binary one.
Practically, it can be observed that the aforementioned decoding method may not converge properly for certain cases of high signal-to-noise ratio (SNR) channels. Such failure may be caused by the error distribution in the received bit sequence. As a result, the decoding process may inefficiently perform an excessive amount of iterations.
Therefore, there is presently a need for a system and method that can address the foregoing issues and decode LDPC code blocks in a more efficient manner.